Flash memory devices have been known for many years. Within all Flash memory devices, NAND-type memories differ from other type memories (e.g. NOR), among other specific characteristics, by the fact that a number of information bits written to the memory may be read back in a “flipped” manner, i.e. different from way these bits have been originally written to the memory.
In order to overcome this phenomenon of obtaining “flipped” bits and to make NAND-type memories usable by real applications, it is a common technique to utilize ECC (Error Correction Code) algorithms in conjunction with these NAND-type memories. An ECC algorithm is typically employed by Flash memories as follows:                Before writing data to the memory, an ECC algorithm is applied to this data in order to compute additional (redundant) information bits. These redundant bits are often called “parity bits” or “parity” and are later used for error detection and correction. The combination of the original data and the parity is called a “codeword”        The entire codeword (i.e the original data and the parity) is recorded to the Flash memory device,. It should be noted that the actual size of the NAND Flash memory device is designed to accommodate the original data as well as the parity.        When the data is retrieved from the memory, the entire codeword is read and an ECC algorithm is applied to the data and the parity in order to detect and correct possible “bit flips” (i.e. errors).        
It should be noted, that the implementation of the ECC algorithm may equally be obtained in hardware, in software or via a combination of hardware and software Furthermore, the ECC algorithm may be implemented within a memory device, within a memory device controller, within a host or may be “distributed” between these components of a system.
Flash memory devices may differ in the number of data elements (e.g. data bits) that are stored in each memory cell of the flash memory device. An SLC (Single Level cell) memory is operative to store a single bit in each memory cell, while an MLC (Multi Level Cell) memory is operative to store multiple bits in each memory cell.
In an MLC memory the manner of coding of voltage levels and the manner of assigning input data to the memory cells are of great importance for achieving an optimization of the ECC design.
A prior art method of storing data in multi-bit flash cells is taught by U.S. Application Publication No. 20060101193 to Murin. This patent application is incorporated by reference for all purposes as if fully set forth herein.
According to the Murin application, the optimal way (in the sense of ECC performance) in which input data is assigned to a physical page of a memory device is by interleaving these data bits between different bit-pages of a physical page, where a bit-page is defined as a group of bits, each one of which belongs to different cell of the physical page and all of which have the same significance within a cell (i.e. LSB, . . . , MSB). Such way of arranging data in the memory device assures that data, which are retrieved from the memory device and then re-arranged in its original order (i.e. de-interleaved), shall have even (optimal) distribution of erroneous bits within it.
The interleaving process, as taught in the Murin application, assures that during the process of writing data to the memory device, input data of a logical page is equally spread among bit-pages of the physical memory page. In other words, the interleaving process assures that each bit-page of the physical page is assigned an equal number of bits from each one of the input data logical pages sharing this physical page.
Therefore, when the data is read out of the memory and de-interleaving is applied to these data, each one of the logical pages, created by the de-interleaving procedure, will contain equal share of bits from each one of the bit-pages of the physical page.
The manner of which an interleaving scheme is applied for assigning input data to a physical page of an MLC memory device is not specified in the art, since any scheme, which evenly distributes data in a physical page, is equally optimal in the sense of ECC performance.
However, for some ECC schemes additional benefits of saving processing time and power consumption may be achieved, using specific interleaving methods.
Therefore, when utilizing these ECC schemes it is desirable to provide an interleaving method for minimizing processing time and power consumption of prior art techniques.